package com.xxwy.ddu.common.autowired.base;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import org.springframework.transaction.annotation.Transactional;

import java.beans.Transient;
import java.io.Serializable;
import java.util.List;

/**
 * @author xxwy
 * on 2018/9/3 0003
 */
public interface XxwyBaseService<E, ID> extends IService<E> {

    //=============================== select ======================================
    default E getByid(ID id) {
        E e = selectById((Serializable) id);
        return e;
    }

    default E getOne(Wrapper wrapper) {
        E o = (E) selectOne(wrapper);
        return o;
    }


    default Page<E> getPage(Page page) {
        Page page1 = selectPage(page, null);
        return page1;
    }

    default Page<E> getPage(Page page, Wrapper wrapper) {
        Page page1 = selectPage(page, wrapper);
        return page1;
    }

    /**
     * 查找All
     *
     * @return
     */
    default List<E> getAll() {
        List<E> es = selectList(null);
        return es;
    }

    default List<E> getAll(Wrapper wrapper) {
        List<E> es = selectList(wrapper);
        return es;
    }

    //=============================== save ======================================
    /**
     * 报错
     *
     * @param entity
     * @return
     */
    default boolean save(E entity) {
        boolean insert = insert(entity);
        return insert;
    }
    //=============================== update ======================================
    /**
     * 修改
     *
     * @param entity
     * @return
     */
    @Transactional
    default boolean updateById(E entity) {
        boolean b = updateById(entity);
        return b;

    }


    //=============================== delete ======================================
    /**
     * 删除
     *
     * @param id
     */
    @Transactional
    default void delete(ID id) {
        delete(id);
    }


}
